//package com.demo.testpackage;
//
//import cn.hutool.poi.excel.ExcelReader;
//import cn.hutool.poi.excel.ExcelUtil;
//import com.alibaba.fastjson.JSON;
//
//import java.io.File;
//import java.util.Arrays;
//import java.util.List;
//import java.util.Map;
//
//public class KeyWordsUtil {
//
//    public static void getKeyWord() {
//        // 1. 解析excel
//        File file = new File("D:/localhost/2222.xlsx");
//        ExcelReader reader = ExcelUtil.getReader(file);
//        reader.addHeaderAlias("词组一", "kw1");
//        reader.addHeaderAlias("词组二", "kw2");
//        reader.addHeaderAlias("词组三", "kw3");
//        reader.addHeaderAlias("词组四", "kw4");
//        List<Map<String, Object>> maps = reader.readAll();
//
//        System.out.println(JSON.toJSONString(maps, true));
//        reader.close();
//
//        KeyWordsUtil keyWordsUtil = new KeyWordsUtil();
//        keyWordsUtil.combinationAll4(maps);
//        // 2. 构建笛卡尔积List
//        /*StringBuilder sb = new StringBuilder();
//
//        int num = 0;
//        for (int i = 0; i < maps.size(); i++) {
//            Map<String, Object> outer = maps.get(i);
//            for (int i1 = 0; i1 < outer.size(); i1++) {
//                for (int j = 0; j < maps.size(); j++) {
//                    Map<String, Object> inner = maps.get(j);
//                    for (int j1 = 0; j1 < inner.size(); j1++) {
//                        sb.append("(\"").append(outer.get("kw"+(i1+1))).append("\" \"").append(inner.get("kw"+(j1+1))).append("\")|");
//                        num++;
//                    }
//                }
////                sb.append("\n");
//            }
//        }
//        System.out.println(num);
//        System.out.println(sb.deleteCharAt(sb.length()-2));*/
//
//        // 3. 结构变化（炸开+拼接）
//
//    }
//
//    private void combinationAll4(List<Map<String, Object>> maps) {
//
//        StringBuilder sR = new StringBuilder();
//        //获取每行元素
//        maps.forEach(x -> {
//            //获取第一项并拆分
//            String str = (String) x.get("kw1");
//            String[] strings = str.split("\b");
//
//            //遍历第一项元素
//            for (int i = 0; i < strings.length; i++) {
//                //初始化拼接
//                String[] sb = new String[1];
//                sb[0] = strings[i];
//                StringBuilder sRc = recursive4(x, 0, sb);
//                sR.append(sRc);
//            }
//        });
//        //打印输出
//        System.out.println(sR);
//
//    }
//
//    /**
//     * @param map 数据集合
//     * @param x   所在列下标
//     * @param sb  已拼接的字符串
//     * @return
//     */
//    private StringBuilder recursive4(Map<String, Object> map, int x, String[] sb) {
//
//        StringBuilder sR = new StringBuilder();
//        int index = x + 1;
//
//        //判断当前列是否小于倒数第一项
//        if (index + 1 <= map.size() - 1) {
//
//            String string = (String) map.get("kw" + (index + 1));
//            String[] strings = string.split("\b");
//            for (int i = 0; i < strings.length; i++) {
//
//                if (sb.length <= index) {
//                    sb = Arrays.copyOf(sb, sb.length + 1);
//                }
//                sb[sb.length - 1] = strings[i];
//
//                StringBuilder sRc = recursive4(map, index, sb);
//                sR.append(sRc).append("\n");
//            }
//
//        } else {
//
//            String string = (String) map.get("kw" + (index + 1));
//            String[] strings = string.split("\b");
//
//            for (int i = 0; i < strings.length; i++) {
//                sR.append("(");
//                for (int i1 = 0; i1 < sb.length; i1++) {
//                    sR.append("\"").append(sb[i1]).append("\"");
//                }
//                sR.append("\"").append(strings[i]).append("\"");
//                sR.append(")|");
//            }
//        }
//
//        return sR;
//    }
//
//
//
//}
